package com.yungu.swift.system.sys.service;

import com.yungu.swift.base.ResponseData;
import com.yungu.swift.base.model.PageVo;
import com.yungu.swift.base.service.BaseService;
import com.yungu.swift.system.sys.model.dto.SysAccountDriverDto;
import com.yungu.swift.system.finance.model.param.AdminAccountFlowPageParam;
import com.yungu.swift.system.finance.model.param.AdminAccountPageParam;
import com.yungu.swift.system.sys.model.vo.SysDriverAccountFlowVo;
import com.yungu.swift.system.sys.model.vo.SysDriverAccountVo;

import java.util.List;
import java.util.Map;

public interface SysAccountDriverService extends BaseService<SysAccountDriverDto> {
    /**
     * 司机账户查询
     *
     * @param pageParam
     * @return
     */
    ResponseData<PageVo<SysDriverAccountVo>> queryPageVo(AdminAccountPageParam pageParam);

    /**
     * 司机账户查询 —— 导出
     *
     * @param pageParam
     * @return
     */
    ResponseData<List<SysDriverAccountVo>> export(AdminAccountPageParam pageParam);

    /**
     * 账户统计 —— 查询司机数量及账号总额
     *
     * @param pageParam
     * @return
     */
    ResponseData<SysDriverAccountVo> statistics(AdminAccountPageParam pageParam);

    /**
     * 查询司机账户流水明细
     *
     * @param flowPageParam
     * @return
     */
    ResponseData<PageVo<SysDriverAccountFlowVo>> flowQueryPage(AdminAccountFlowPageParam flowPageParam);

    /**
     * 查询司机账户流水明细 —— 导出
     *
     * @param flowPageParam
     * @return
     */
    ResponseData<List<SysDriverAccountFlowVo>> flowExport(AdminAccountFlowPageParam flowPageParam);

    /**
     * 获取司机账户信息
     *
     * @param map
     * @return
     */
    ResponseData<SysDriverAccountVo> findAccountDriverVo(Map<String, Object> map);

    /**
     * 司机冻结金额解冻
     *
     * @return
     */
    ResponseData<Boolean> thawDriverFrozenBalance();

    /**
     * 批量插入
     *
     * @param list
     * @return
     */
    ResponseData<Boolean> saveBatch(List<SysAccountDriverDto> list);

}